package vip.zhenzicheng.rabbitmq.helloworld;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import vip.zhenzicheng.rabbitmq.utils.RabbitConstant;
import vip.zhenzicheng.rabbitmq.utils.RabbitUtils;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @author zhenzicheng
 * @DESCRIPTION: 发布到mq demo
 * @DATE: 2022/04/24 9:50 AM
 */
public class Producer {
  public static void main(String[] args) throws IOException, TimeoutException {
    // 获取TCP长连接
    Connection conn = RabbitUtils.getConnection();
    // 创建信道 相当于TCP中的虚拟连接
    Channel channel = conn.createChannel();
    /*
     * 创建队列，声明并创建一个队列，如果队列已存在，则使用这个队列
     * @param s 队列名称ID
     * @param b 是否持久化，false对应不持久化数据，MQ停掉数据丢失
     * @param b1 是否队列私有化，false则代表多有消费者都可以访问，true代表只有第一次拥有它的消费者才能一直使用
     * @param b2 是否自动删除，false代表连接断开后不自动删除
     * @param map 其他额外的参数 null
     */
    channel.queueDeclare(RabbitConstant.QUEUE_HELLOWORLD, false, false, false, null);

    String msg = "zzc let you say 'Hello World'";
    /*
     * @param s 交换机 暂时用不到，在发布订阅模式才会用到
     * @param s1 队列名称
     * @param basicProperties 额外的设置属性
     * @param byte[] 消息字节数组
     */
    channel.basicPublish("", RabbitConstant.QUEUE_HELLOWORLD, null, msg.getBytes());
    channel.close();
    conn.close();
    System.out.println("数据发送成功");
  }

}
